package notice.service.impl;

import lombok.extern.slf4j.Slf4j;
import notice.dto.OrderNoticeDto;
import notice.service.Observer;
import notice.util.IdempotentUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @description: 扣款通知：信用处理
 * @author: zk
 * @since: 2022-08-17 10:19
 */
@Slf4j
@Service
public class CarCreditHandler implements Observer {
    //@Resource
    //private CarCreditService carCreditService;
    @Resource
    private IdempotentUtil idempotentUtil;

    @Override
    public void update(OrderNoticeDto notice) {
        log.info("扣款通知-信用处理 notice={}", notice);
        // 幂等检查
        if (idempotentUtil.idempotentCheck(this.getClass(), notice.getOrderNo())) {
            log.warn("扣款通知-垫资处理 该记录已经处理过 notice={}", notice);
            return;
        }

        // 客车
        //if(OrderNoticeDto.ORDER_TYPE_CAR.equals(notice.getOrderType())) {
        //    // 微信扣款-信用处理
        //    if (CarDeductionRecord.CHANNEL_WX.equals(notice.getCurrPayChannel())) {
        //        carCredit(notice);
        //    }
        //}

        //  幂等表-有效期一周
        idempotentUtil.addIdempotentRecord(this.getClass(), notice.getOrderNo(), 7 * 24 * 60 * 60L);
    }

//    private void carCredit(OrderNoticeDto notice) {
//        //只有代扣成功或者代扣失败才调用信用信息更新接口
//        if (EtcIssueTypeEnum.ZS_CAR.getCode().equals(notice.getEtcTypeId())) {
//            if (CarDeductionRecord.PAY_STATUS_SUCCES.equals(notice.getPayStatus())
//                    || CarDeductionRecord.PAY_STATUS_FAIL.equals(notice.getPayStatus())) {
//                log.info("代扣通知时调整信用信息 notice={}",notice);
//                boolean payResult = CarDeductionRecord.PAY_STATUS_SUCCES.equals(notice.getPayStatus());
//                try {
//                    carCreditService.whileDeductionEditCredit(notice.getEtcNo(), notice.getPlateNumber(), notice.getColor(), notice.getTransFee(),
//                            payResult, notice.getId());
//                } catch (Exception e) {
//                    log.warn("代扣通知时调整信用信息失败,orderNo={}", notice.getOrderNo(), e);
//                }
//            }
//        }
//    }
}
